package cn.qn.service.member;

import cn.qn.base.PageVO;
import cn.qn.dto.member.MemberAccountDTO;
import cn.qn.dto.member.MemberAccountQueryDTO;
import cn.qn.exceptions.BizException;
import cn.qn.moudle.security.MemberAccount;
import cn.qn.moudle.security.Permission;
import cn.qn.moudle.security.Role;

import java.util.List;

/**
 * @author: Bryant
 * @date: 2019/5/24
 * @description:
 */
public interface MemberService {
    /**
     * 通过userId查询员工信息
     * @param userId
     * @return
     */
    MemberAccount findMemberAccountByUserId(String userId);

    MemberAccount findMemberAccountById(Integer id);
    /**
     * 查询所有权限
     * @return
     */
    List<Permission> finAllPermission();

    /**
     * 查询权限所需角色
     * @param permissionId
     * @return
     */
    List<Role> findRolesByPermissionId(Integer permissionId);

    /**
     * 查询用户角色
     * @param userId
     * @return
     */
    List<Role> findRoleByMemberId(String userId);

    /**
     * 员工列表查询
     * @param query
     * @return
     */
    PageVO<MemberAccountDTO> pageQueryMembers(MemberAccountQueryDTO query);

    /**
     * 保存用户信息
     * @param memberAccount
     */
    MemberAccount saveMemberAccount(MemberAccountDTO memberAccount);

    /**
     * 修改用户信息
     * @param memberAccount
     */
    MemberAccount updateMemberAccount(MemberAccountDTO memberAccount);

    /**
     * 通过手机号码查询用户
     * @param mobile
     * @return
     */
    MemberAccount findMemberAccountMobile(String mobile);

    /**
     * 重置密码
     * @param member
     */
    void updatePassword(MemberAccountDTO member) throws BizException;

    /**
     * 修改用户状态
     * @param member
     * @throws BizException
     */
    void updateStatus(MemberAccountDTO member) throws BizException;
}
